2024.05.20 07:21 tab_rick Kitchen Countertop Replacement: Materials and Cost Insights
Why Replace Your Kitchen Countertop?The kitchen countertop is not just a flat surface. It is used for cooking and sometimes for eating. However, as time passes, even the best countertops get damaged. They get stained, chipped, and lose their brightness. So, why is it important to think about a new one?Firstly, old countertops can contain a lot of bacteria. This is not healthy. Secondly, a damaged countertop makes your kitchen look bad. Nobody wants that. Also, new countertops, like solid surface, are tough and do not get stained. If you want a new kitchen look, think about changing your countertop. How Often Should You Replace Your Kitchen Countertop?How often should you change your kitchen countertops? The answer varies based on the material and maintenance. Laminate countertops last 10 to 20 years. Natural stone can last forever with proper care. If you notice tough stains or cracks, consider replacing them. Wanting a new look is another reason to change. New countertops can increase your home’s value. Changing them can be a good financial decision.Here is a list of expected lifespan of each material:
Kitchen Countertop Replacement vs. RenovationIn the realm of kitchen countertop solutions, there are primarily two distinguished approaches: full replacement and meticulous renovation. A full replacement entails the removal of the existing surface, followed by the installation of a new one, often involving a complete shift in materials and design. This strategy is recommended for countertops that have undergone significant wear or damage. Conversely, renovation typically encompasses procedures like resurfacing or resealing, serving as a cost-efficient alternative suitable for countertops in decent condition requiring modernization. The choice between these two methods should be predicated on the countertop’s present condition, financial constraints, and the envisioned end result.Tips for Countertop Installation for HomeownersMany homeowners think about DIY countertop installation. But it’s not easy. You can choose from many materials. These include elegant marble countertops and quartzite. You also have durable engineered stone like solid surfaces. Slate countertops are another option. Each slab needs sealing to avoid stains. Grout is used for tiles. Cutouts are made for appliances and faucets. https://preview.redd.it/mngfa1x2oi1d1.png?width=612&format=png&auto=webp&s=ffdcf40f77f431f1176238303bce93afa6adae70 The size of your kitchen cabinets affects your project’s square footage. Costs are often by square foot or linear foot. Don’t forget to add extra square feet for splashes. The average cost gives you a rough idea. But the exact price can change. Additional factors matter. You might need a professional electrician. Installers may offer a warranty. In the end, DIY seems good but has risks. Professional installation gives high-quality results. Some materials need special skills. For example, sealing marble or joining Corian needs expertise. Always think about the pros and cons. Consider what your kitchen needs. Make a good choice based on all these factors. Popular Countertop Materials for ReplacementCountertops are important in kitchens. When changing them, material choice matters. Think about durability, design, and use. What materials are popular now?Solid SurfaceSolid surface countertops are made of 100% aluminum hydroxide and natural minerals. These materials are combined to make a tough and durable countertop. A great feature is that they don’t yellow quickly, so they look new for a long time.You can cut, drill, and shape them with power tools, and they set in about 2 minutes. They are easy to maintain and repair. Also, they passed the CA65 test, which means they resist stains, chemicals, and bacteria. Because solid surface is non-porous, moisture and air can’t create bacteria. So, it’s a clean choice for your kitchen. MarbleMarble is a strong and pretty stone used for many things, like buildings and art. Today, many people use marble for kitchen. Why? Because it’s tough and doesn’t get scratches easily. Hot things won’t harm it, and it stays smooth over time. Cleaning it is simple, and it doesn’t need much care. If you drop food or liquid on it, just clean it up. Thinking of a new top for your kitchen? Marble is a good pick. It looks nice, lasts long, and is easy to use every day. With marble, your countertop can look even better.QuartzQuartz countertops are basically a mix of quartz crystals and resin. This combo makes them super tough and they don’t stain easily. The best part? You don’t have to seal them like some other stone countertops, so you save on upkeep. They come in all sorts of colors and designs, so you’re bound to find one that vibes with your kitchen. If your kitchen sees a lot of action, quartz is a solid choice because it stands up to daily use without getting all scratched up.GraniteGranite countertops are made from natural stone and they’re a hit if you’re after a durable, upscale look. They can handle heat, resist scratches, and if you seal them right, they won’t stain easily. But heads up, you’ve got to seal them regularly. Design-wise, each granite piece is like a work of art with its own colors and patterns. So if you’re after a one-of-a-kind countertop that can handle the daily hustle, granite’s your guy.How Much Does Countertop Replacement Cost?The cost of countertop replacement can vary widely based on several factors. Here’s a rough estimate of the costs involved:
What to Consider When Budgeting for Countertop Replacement?When budgeting for a countertop replacement, there are several main factors to consider:
Why Solid Surface is the Prior Choice for Kitchen Countertop Replacement?Solid surface countertops are a popular choice for kitchen countertop replacement for several reasons:
ConclusionSo, you’re thinking about swapping out that old kitchen countertop, huh? It’s a big move, no doubt. You’ve got to juggle a bunch of stuff like what material to use, how much you’re willing to spend, and who’s gonna install it. Now, if you ask me, solid surface countertops are kinda the MVPs here. They’re tough, they look good in any kitchen, and they won’t too expensive. But hey, it’s all about what works for you and your budget. So, take a moment, weigh your needs and your wallet.Get a Fast Quote from KKR TodayKKR is a well-known company that makes and designs solid surfaces. They have been doing this for over 23 years and are experts in molding and thermoforming technologies. They create solid surfaces for different industries. KKR provides many choices and customization options, so you can get high-quality products with great features. Their acrylic solid surface sheets are famous for being flexible, versatile, and easy to clean. That makes people prefer them for furniture and other surfaces. |
2024.05.20 07:07 tab_rick Top 10 Best Bathroom Sinks in 2023
Navigating the myriad options for bathroom sinks and finding the best bathroom vanities with ample storage space can be an intricate endeavor. We are committed to simplifying this process for you. Join us as we explore the top 10 bathroom sinks of 2023, shedding light on their distinguishing features, exceptional advantages, and market-leading attributes. Together, let’s identify the sink that flawlessly marries elegance and utility for your living environment. submitted by tab_rick to KKRsolidsurface [link] [comments] What is the Best Bathroom Sink?The ideal bathroom sink is a complex interplay of personal taste, spatial limitations, and design objectives. However, there are universally recognized qualities that contribute to a superior bathroom sink.Ease of MaintenanceEffective household management necessitates reducing the time allocated for bathroom sink maintenance. Premium sinks are designed for low maintenance, featuring stain-resistant properties and ease of cleaning. Materials like solid surfaces are advantageous due to their smooth surfaces that effectively repel common bathroom stains.Diversity in Sizes and StylesA one-size-fits-all approach is impractical when it comes to bathroom sinks. Your choice will be influenced by spatial considerations and aesthetic preferences. Below are some standard sink dimensions:
Drop-in SinksCommonly known as top-mounted sinks, drop-in sinks are favored for their straightforward installation process. These sinks are inserted into a pre-cut hole in the countertop, with the rim sitting above it. This configuration offers a contemporary look and serves as a practical solution for settings that prioritize both aesthetics and utility.Undermount SinksUndermount sinks are affixed beneath the countertop, delivering a streamlined and modern appearance. Preferred for minimalist settings, the lack of a rim simplifies cleaning and eliminates the possibility of debris accumulation.Above-counter SinksAlso referred to as vessel sinks, above-counter sinks are positioned entirely atop the countertop, serving as a striking design element. Available in a variety of materials like solid surface, ceramic, or copper, these sinks offer businesses an opportunity to make a visual impact.Cabinet SinksCombining storage and sink into a unified structure, cabinet sinks are perfect for those requiring additional storage for toiletries and other essentials. These sinks often come with soft-close drawers and are crafted from diverse materials such as hardwood, engineered wood, teak, and plywood, delivering both functionality and style.Freestanding SinksFreestanding sinks, including freestanding vanities, stand independently, not requiring a countertop or vanity for support. These sinks are particularly well-suited for spacious environments aiming for a refined aesthetic. Made from high-quality materials like solid surface or porcelain, are both durable and low-maintenance. Their design flexibility allows them to serve as eye-catching focal points when complemented with stylish faucets.Wall-hung SinksWall-hung sinks, sometimes referred to as wall-mounted sinks, are designed to maximize floor space in compact bathrooms or powder rooms. They are directly mounted to the wall, often featuring built-in faucet holes and a small ledge for storing toiletries. Crafted from robust materials like solid surface or stainless steel, wall-mount sinks ensure lasting performance.Multifunction DesignThe quintessential bathroom sink should surpass mere washing capabilities. It should epitomize a fusion of convenience and advanced utility, taking into consideration the available space in the bathroom. Features such as integrated storage solutions and adaptable faucet hole configurations are essential to cater to a broad spectrum of plumbing prerequisites. The strategic inclusion of overflow drains is indispensable to counteract potential water spillage. During the selection phase, it’s paramount to juxtapose these functional nuances with sophisticated aesthetics. Facets like soft-close drawers and innovative shelving solutions augment the sink’s multifaceted utility. It’s also vital to appraise the spatial dynamics of the bathroom to ensure an impeccable integration.Superior MaterialsThe material pedigree of a bathroom sink is instrumental in ascertaining its enduring appeal and resilience. Options span from the perennial sophistication of porcelain to the stalwart resilience of stainless steel and copper. It becomes imperative to select a sink that is impervious to stains, adept at handling thermal variances from hot water, and exhibits unwavering durability over extended periods. Whether one’s inclination is towards a cutting-edge solid surface sink or a vintage wooden basin, the chosen piece should resonate with both utilitarian needs and refined aesthetic inclinations. Such a choice guarantees a harmonious amalgamation with the overarching bathroom decor while ensuring a lot of storage for quintessential items at an affordable price point.Solid Surface Bathroom SinksDive into the realm of solid surface bathroom sinks, a pinnacle of modern bathroom design. These sinks are meticulously crafted from a unique blend of high-grade resins and aluminum hydroxide powder. This combination results in a pristine, pore-free surface that marries aesthetic charm with functional utility. Notably, the use of premium isophthalic resin ensures the sink remains resistant to yellowing over its lifespan. https://preview.redd.it/bktr3n3k8i1d1.png?width=612&format=png&auto=webp&s=f00b0b1947f3c693f0337c64f69cb79e8d405370 Key Features of Solid Surface Bathroom Sinks
Maintenance of Solid Surface Bathroom SinksMaintaining these sinks is straightforward. Their non-porous nature wards off stains, and a quick wipe with a damp cloth paired with a mild detergent is all it takes to maintain their pristine look. Simple and hassle-free.Stone Bathroom SinksStone bathroom sinks, meticulously crafted from natural materials such as granite, quartz, and marble, are synonymous with luxury and elegance. Their inherent beauty, derived from nature, ensures that each sink stands as a unique masterpiece, enhancing the aesthetic appeal of any bathroom.Key Features of Stone Bathroom Sinks
Maintenance of Stone Bathroom SinksFor stone bathroom sinks to retain their pristine condition, consistent and appropriate care is paramount. Periodic sealing is vital to ward off stains and maintain the sink’s sheen. For daily upkeep, opt for a mild, pH-balanced cleanser and steer clear of abrasive agents that might mar the surface.Acrylic Bathroom SinksAcrylic sinks are the unsung heroes in the world of bathroom fixtures. Lightweight, affordable, and available in a myriad of designs, they’re a popular choice for many businesses.Key Features of Acrylic Bathroom Sinks
Maintenance of Acrylic Bathroom SinksAcrylic sinks are a breeze to maintain. A simple wipe with a soft cloth and mild detergent will keep them shining. Avoid using abrasive cleaners as they can scratch the surface.Porcelain Bathroom SinksAh, porcelain, the classic choice. Known for its smooth and glossy surface, porcelain sinks have graced bathrooms for decades. Crafted from vitreous china, they’re a symbol of elegance and sophistication.Key Features of Porcelain Bathroom Sinks
Maintenance of Porcelain Bathroom SinksMaintaining porcelain sinks is straightforward. A gentle cleaner and a soft cloth are all you need to keep them in pristine condition. Regularly rinse and wipe to prevent mineral deposits from forming.Fiberglass Bathroom SinksFiberglass sinks might not be the first choice that pops into your mind, but they’ve been making waves in the industry. Known for their impact resistance and lightweight nature, they’re a practical choice for businesses that prioritize functionality without compromising on aesthetics.Key Features of Fiberglass Bathroom Sinks
Maintenance of Fiberglass Bathroom SinksTaking care of a fiberglass sink is pretty straightforward. Regular cleaning with a non-abrasive cleaner will keep it looking spick and span. It’s also a good idea to avoid exposing the sink to high temperatures for prolonged periods.Stainless Steel Bathroom SinksStainless steel isn’t just for your kitchen. Over the years, stainless steel bathroom sinks have gained popularity, especially in commercial settings. They’re durable, resistant to corrosion, and offer a sleek, modern look that many businesses crave.Key Features of Stainless Steel Bathroom Sinks
Maintenance of Stainless Steel Bathroom SinksMaintaining a stainless steel sink is simple. Regular cleaning with a mild detergent will do the trick. To prevent water spots, it’s a good idea to wipe the sink dry after use. And if you want to keep it shiny, an occasional polish with a stainless steel cleaner will have it gleaming like new.Composite Bathroom SinksComposite sinks are the unsung heroes in the world of bathroom fixtures. Made from a blend of materials, often including granite or quartz combined with resins, these sinks offer durability and a unique aesthetic appeal.Key Features of Composite Bathroom Sinks
Maintenance of Composite Bathroom SinksComposite sinks are relatively low maintenance. It usually only needs regular cleaning with a non-abrasive cleaner to keep it looking its best. For tougher stains, a gentle scrub with a soft brush can work wonders.Cast Iron Bathroom SinksCast iron sinks are like the grand old dames of the bathroom world. They’ve been around for ages, and there’s a good reason for that. With their excellent stain resistance and easy-to-clean nature, they’ve earned their place in many a bathroom, be it in a chic boutique hotel or a bustling business center.Key Features of Cast Iron Bathroom Sinks
Maintenance of Cast Iron Bathroom SinksMaintaining a cast iron sink is straightforward. Regular cleaning with a mild detergent will keep it shining. It’s also a good idea to avoid using abrasive cleaners as they can damage the enamel coating.Copper Bathroom SinksCopper bathroom sinks are a unique and intriguing choice for businesses looking to blend aesthetic charm with functional benefits. Known for their natural antibacterial properties, these sinks offer a distinct advantage in terms of hygiene. Crafted usually from a single sheet of copper and often hand-hammered, each sink is a unique piece of functional art. Over time, copper develops a patina, a natural layer that not only protects the material but also enhances its aesthetic appeal. This evolving characteristic makes copper sinks a living, changing element in your bathroom design.Key Features of Copper Bathroom Sinks
Maintenance of Copper Bathroom SinksTo keep your copper sink looking its best, you need to take good care of it. Avoid using harsh or rough cleaners because they can remove the natural patina that forms on the copper surface. Stick to gentle cleaners to preserve its beauty and functionality.Concrete Bathroom SinksConcrete bathroom sinks have gained prominence as a fashionable selection for contemporary bathroom designs. Known for their robustness, versatility, and industrial aesthetic, these sinks are highly favored by businesses aiming to elevate their interior décor.Key Features of Concrete Bathroom Sinks
Maintenance of Concrete Bathroom SinksWhile concrete sinks offer numerous advantages, they do necessitate more frequent maintenance compared to other materials like porcelain or stainless steel. Regular sealing is essential to guard against water damage and staining. For daily cleaning, the use of a mild, non-acidic cleaner is advised.Why Choose Solid Surface Bathroom Sinks?Solid surface bathroom sinks have emerged as a top choice for homeowners and designers alike due to their seamless integration, durability, and aesthetic appeal. Here is a list of solid surface bathroom sinks you can find out:
KKR: Supplier of High Quality Solid Surface Bathroom SinksKKR stands as a paramount figure in the realm of solid surface bathroom sinks, with a distinct focus on OEM and ODM services. Their unwavering dedication to precision, innovation, and superior quality is evident in every sink they produce, striking a harmonious blend of refined aesthetics, exceptional functionality, and enduring resilience.Every creation from KKR is a testament to their dedication to masterful craftsmanship. Crafted using premium-grade resins and elite aluminum powder, their sinks boast a lustrous finish that not only captivates the eye but promises sustained performance over the years. For enterprises aiming to curate a cohesive and opulent bathroom ambiance, KKR’s offerings are unparalleled. Their sinks are ingeniously designed to integrate flawlessly with diverse countertop materials, from quartz and granite to hardwood. This versatility empowers businesses to tailor the bathroom ambiance, aligning with the sophisticated tastes of their clientele. Expertise in OEM and ODM ServicesKKR’s prowess transcends mere product fabrication. Their OEM and ODM services are a reflection of their profound industry insights and adaptability. Whether you’re a brand with a vision to craft sinks tailored to your specifications or in search of a collaborator to conceptualize and produce a distinctive product range, KKR’s expertise ensures your aspirations are brought to life with precision and utmost professionalism.Excellent Capabilities for Solid Surface ProductsRenowned as a vanguard in solid surface bathroom sink manufacturing, KKR’s expertise in producing superior solid surface countertops is unparalleled. They are adept at delivering products endowed with attributes like warp resistance, color retention, innate sheen, and a flawless finish. As an industry trailblazer, KKR presents an extensive array of customization avenues, encompassing dimensions, designs, hues, sink and faucet configurations, and choices in rim, backsplash, contour, and surface finishes. With an unwavering commitment to quality and client contentment, KKR further enhances the customer journey with an exhaustive after-sales support system.ConclusionNavigating the diverse array of bathroom sink choices, encompassing solid surfaces, gleaming stainless steel, and avant-garde composite designs, can be intricate. Yet, with judicious selection and the backing of esteemed brands like KKR, enterprises can assuredly procure products that not only elevate their aesthetic appeal but are also engineered for longevity.Allocating resources to pivotal elements of business infrastructure, such as bathroom amenities, necessitates collaboration with industry frontrunners. KKR, leveraging its OEM and ODM expertise, guarantees that your capital is channeled into a seamless fusion of aesthetic finesse and unwavering functionality for the long haul. |
2024.05.20 06:57 GhoulGriin Best Center Mass Laser
submitted by GhoulGriin to u/GhoulGriin [link] [comments] https://preview.redd.it/yjvfh0f6ji1d1.jpg?width=720&format=pjpg&auto=webp&s=3441a4278ceb5566a368c22fb2ca0f3e34012566 The Top 5 Best Center Mass Laser
Reviews🔗Garage Laser Park Dual with Motion-Activated Light: Effortless Parking Solutionhttps://preview.redd.it/c4lnwam8ji1d1.jpg?width=720&format=pjpg&auto=webp&s=cf103aff1e73893db2a5e81a95af5b60605590d5 The Maxsa Innovations 37314-W-RS Park Right Garage Laser combines safety and ease in one sleek package. Its laser-guided parking system illuminates the way for up to two cars, even in the tightest of garages. Installation is a breeze - simply use the included screws or double-stick tape, and plug it in to your choice of AC power source. If power goes out, don't worry - the laser park comes with a battery backup option, ensuring it remains a reliable navigation aid. But the real winner is the motion-activated LED light. No more fumbling for switches as you enter or exit the garage with your hands full. Its sensitivity is on point, turning on as you approach from up to 10 feet away. This smart feature not only makes parking a breeze but also prevents potential trips or falls in the process. Overall, this Park Right Laser with Motion Activated Light is not just a nifty gadget, but a game-changer for the garage parking experience. 🔗High-Accuracy Rail-Mounted Laser for IndooOutdoor Usehttps://preview.redd.it/vl0nefw8ji1d1.jpg?width=720&format=pjpg&auto=webp&s=14db7a365f4f3352fef14b6fd39d2ac453a38114 I recently tried out the DeWalt DCLE34220GB, a 20V Max 2-Spot Cross Line Combo Green Laser. This powerful tool impressed me with its fine adjustment feature, which made setting it up faster and more accurate. The 20V Max platform offered a range of possible runtimes, with an impressive 23 hours on a single 2 Ah battery (not included). One of the standout features was the magnetic mount, which made it a breeze to attach to most steel construction materials. However, I noticed that the locking pendulum could sometimes be a bit fiddly to adjust. Overall, this laser is a valuable addition to any toolkit, especially for those building rail mounted structures. 🔗Self-Leveling Construction Laser for Interior and Exterior Applicationshttps://preview.redd.it/gku45zb9ji1d1.jpg?width=720&format=pjpg&auto=webp&s=9a139ef116259173e230bab2b0d595580d7e4b8b Using the Trimble Spectra Precision HV301 laser has been a game-changer for my construction projects. It's a versatile device, ideal for both indoor and outdoor work, and can handle an impressive range of tasks, including leveling and aligning forms and footers. The laser's impressive clarity makes it easy to spot from any angle - it even rotates 90 degrees, offering both plumb and perpendicular references. The HV301's self-leveling nature saves me a significant amount of time and effort in making sure the device is perfectly level before beginning each task. I also appreciate how the package includes everything one might require in the field, such as a carrying case, a laser receiver, rechargeable batteries, and a charger. That being said, the device did not come with a manual, which I found a bit inconvenient. Additionally, the device's battery life could be extended - it ran out after just a few hours of use. Overall, the Trimble Spectra Precision HV301 laser has become an indispensable tool in my construction projects, due to its adaptability and high visibility. Despite the few drawbacks, it's a worthwhile investment for anyone in the construction business. 🔗Accurate Green Beam Line Generator Laser for Outdoor Levelshttps://preview.redd.it/jcnt1rt9ji1d1.jpg?width=720&format=pjpg&auto=webp&s=76360c37b985dd7caaa86ff3336d5faa89807823 I recently had the chance to test out the Craftsman Green 55-foot Self-Leveling Outdoor Line Generator Laser Level with Cross Beam, and let me just say, it's been quite the adventure! Now, I'll admit, I'm not exactly the handy type of person, but I figured it was time to step up my game and tackle a project or two around the house. As a complete novice, this laser level seemed like the perfect tool to help me out. The first thing that stood out was the brightness of the green laser beam. It made the cross beam visible like never before, even in the daylight. The self-leveling feature was also a fantastic addition, as it made my life so much easier. Instead of trying to figure out the angle on my own, I simply turned the switch on and off until I heard the beep, and the laser level did the rest of the work for me. However, there were a couple of minor drawbacks I ran into. The first issue came when I tried to use it outside. Although the product description said it could be used outdoors, I found that the laser beam didn't have quite the range I had hoped for. In fact, the brightness started to fade at around 10 feet, and completely disappeared by the time I reached 20 feet. I had to rely on a tripod and position it very close to the wall in order to see the laser line. Additionally, the 3 position lock switch with manual mode felt a bit tricky to use at first. I needed to refer to the instruction manual to figure out exactly how it worked and how to move between the different modes. Once I got the hang of it, however, it became pretty straightforward. Despite these small drawbacks, I can honestly say that I'm quite happy with this laser level. Its brightness and ease of use made an absolute novice like me feel confident in tackling a few projects around the house. If you're just starting out and need a reliable tool to help you level, this little green machine just might be the perfect fit for you. 🔗Canon Wireless Laser Multifunction Printer with High-Speed Printing and Expandable Paper Capacityhttps://preview.redd.it/fscjo5daji1d1.jpg?width=720&format=pjpg&auto=webp&s=13410d32395c798c72d9f929f21b2833ea0d26a3 Canon's imageCLASS MF751Cdw is designed to meet the needs of small and medium-sized businesses. Its speedy performance and minimal maintenance make it a perfect fit for the modern office. Setting up the printer is a breeze, and once connected to a wireless network, users can easily print on-the-go using compatible mobile apps. The printer's media versatility allows for printing on a variety of media types and sizes, including envelopes, banners, and more. The MF751Cdw features a customizable, 5-inch color touchscreen that delivers an intuitive user experience. The printer can produce crisp, colorful documents with fast print speeds of up to 35 pages per minute using high-quality Canon Genuine Toner. With Poster Artist Online, users can create professional-quality posters, banners, and signage. The printer has an optional cassette PF-K1, which can hold up to 550 sheets, and an expandable paper capacity of up to 850 sheets, with a plain paper capacity of up to 250 sheets. Easy connectivity options include high-speed USB, Ethernet, and wireless printing from computers or mobile devices. Users can also print using a variety of mobile apps, such as the Canon PRINT Business app. The printer includes a 3-year limited warranty and is backed by Canon's Service and Support network. While the imageCLASS MF751Cdw offers many impressive features, its bulkiness may be a drawback for users looking for a more compact printer. Additionally, the printer can be a bit noisy during operation, which may be a concern for those working in quieter office environments. However, the printer's speed, ease of use, and print quality are top-notch, making it a worthy investment for small and medium-sized businesses seeking a reliable and versatile multifunction printer. Buyer's Guidehttps://preview.redd.it/ij4bq5zbji1d1.jpg?width=720&format=pjpg&auto=webp&s=22315cdb43ba8b06d7ed40439f38e17fad3d51c0 None FAQhttps://preview.redd.it/6ex3oq8cji1d1.jpg?width=720&format=pjpg&auto=webp&s=66a3c939990380c93fed20f1d0a5c578c20b492e What is a Center Mass Laser?A Center Mass Laser is a sight designed to improve the accuracy of your shots, especially when shooting at longer distances or in low-light conditions. It provides a crisp, bright dot to aim at, making it easier to concentrate on your target and maintain proper eye alignment with the gun. It is an essential accessory for serious gun enthusiasts and competitive shooters.How does a Center Mass Laser work?https://preview.redd.it/5uh8thxcji1d1.jpg?width=720&format=pjpg&auto=webp&s=7f50558f7d6d1b3325d25caaea6dac49f199c95d The Center Mass Laser works by using a small laser to project a dot or target marker onto the front sight of your firearm. This light helps increase the visibility of the front sight, making it easier to target accurately. The laser is powered by a battery, and most Center Mass Lasers have an adjustable brightness setting so that you can control how much light is being emitted. What are the benefits of using a Center Mass Laser?Using a Center Mass Laser can improve your accuracy and efficiency when shooting, especially when the lighting conditions are not optimal. It helps you find and maintain a proper sight picture, allowing you to make more accurate shots, especially for long-distance targets. It's also useful for shooters with visual impairments or when using night vision. Additionally, it can help you build muscle memory for consistent shots and can be used as a training aid for beginners. https://preview.redd.it/6s9qfx1dji1d1.jpg?width=720&format=pjpg&auto=webp&s=2b7bb9595b7fea1d338e5b943aed08b322201dac How do I install a Center Mass Laser on my firearm?Installation of a Center Mass Laser on your firearm requires a few essential steps:
How long does the battery of a Center Mass Laser last?Battery life depends on the model of the Center Mass Laser and the brightness setting. Most laser sights can operate for hundreds of hours on a single battery, but some models may use more power and have a shorter battery life. It's essential to check the battery life of your laser sight regularly and replace the batteries as needed.Can I use a Center Mass Laser together with a red dot sight or a holographic sight?Yes, you can use a Center Mass Laser together with a red dot or holographic sight. Many serious shooters and gun enthusiasts use both types of sights together, as they offer different advantages in different situations. The Center Mass Laser can help you find the front post of your firearm more easily, while the red dot or holographic sight provides a larger, more easily-seen reticle for faster target acquisition.As an Amazon™ Associate, we earn from qualifying purchases. |
2024.05.20 06:56 Automatic-Ganache-25 Out of my own way
2024.05.20 05:52 Acrobatic-Major1139 Drain Issues - Gargling and Clogs
Hello, I bought a house 2 years ago and had 3 clogs on this drain line so far (see diagram). I have an upstairs kitchen sink and basement kitchen sink connected to this drain line. The clog causes my basement sink to fill up and flood the basement. submitted by Acrobatic-Major1139 to Plumbing [link] [comments] The first two times I had a clog, i used a snake to fix. The 3rd clog (approx. 3 months ago) i was able to fix using dish soap and hot water. I don't know what the clog is or what is causing the clog... Recently i noticed whenever water drains from the upstairs sink, it causes loud garaging noise and smell in the basement sink. I installed a mechanical vent on the basement kitchen sink after finding out there was no vent, I also installed a 1.5" backflow preventer between the basement sink p-trap and mechanical vent so any future clogs will not flood the basement. I was wondering if anyone can guide me with where to start? Should i replace the mechanical vent? or Is it better i investigate the drain? I am thinking if a camera inspection would help me find the underlying issue. My bathrooms and laundry are connected on a separate drain line and I have no issues with that line. thanks for your help! https://preview.redd.it/0yynz7lr7i1d1.jpg?width=585&format=pjpg&auto=webp&s=a24f8dd769784c00b28ca5444539e35f6e95224d |
2024.05.20 05:10 Gumnaamx [TENANT US-CA]
2024.05.20 04:39 Busy_Significance803 I've compiled what this sub has turned to
Odeofsilence and okproblem are managers at the company named "ikillpeopleandusethiscompanytopayoffthevictimsfamily" they sent the dog video to coolee's cousin machine gun kelly and andy milonakas and he has a song with chief keef (who is a rapper) and so is drake so they're directly involved. rick ross is fat. today i walked by a pet store and i think it's also linked to the illuminati dog bowl embassy hotel "The Mark" which is the drake dog video leak on akademiks stream... the pet store had dog themed items which is a direct reference to drake dog mask and the pizza gate. It's all involved, i saw a woman on tiktok say drake stole her bike back in toronto she might be involved as well submitted by Busy_Significance803 to DarkKenny [link] [comments] Big breast disabled milk man follows dave free LinkedIn. CA ebony (EP) style freaky midget dog man costume listening to beats for more than 5 minutes... Boi1da made a barbeque sauce back in 17 limited edition sold in the mark seafood restaurant only... it tasted like dogshit so i wonder if thats a double entendre as well Odeofsilence 6/6/2024 (2+4=6) lucifer himself had entered now we must make a prayer circle to protect his attempts at displacing our thoughts to protect us while the others continue on figuring more stuff out, muslims and jewish friends you should also bring out your respective religious books/scrolls incase it's the devil from your religions!! This is getting deep drake has a chain that is a circle and thats a shape.. so are triangles... bermuda triangle sinking plane theory.. the leader of iran helicopter crashed..... its getting deep maybe he got the dog video from okproblem and andy so they had to activate the pyramids to take him down |
2024.05.20 03:49 National_Ear2611 Please Chance Me! Rate My College Application Stats
2024.05.20 03:49 Significant_Log7499 Konnected Wiring Help - Networx NX-6v2
I can’t seem to get the Konnected relay and vref hooked up correctly/to report in HA. submitted by Significant_Log7499 to homeassistant [link] [comments] I have the 6 zone interface kit and have the zones connected to my Networx NX-6v2. The zones report correctly via Home Assistant. Zones 1-5 are a mix of windows and doors with wired sensors. Zone 6 is a wired glass break sensor. There are three keypads, all without LCDs. Any ideas how to get the kit wired correctly? |
2024.05.20 03:32 netizen13660 Bathrooms before & after
Just wanted to share our finally (!) finished bathroom remodels. We gut remodeled 2 bathrooms in our 1909 Craftsman home. The first one is the master bath, second is a hall bath which the kids and guests will use. It took 1.5 years from design, permit, to construction and completion. submitted by netizen13660 to centuryhomes [link] [comments] Details for those who want it- 1. The master bath was tiny and we enlarged it (by taking away an adjacent closet). The hall bath had the tub by a window, so we had to rework that layout. 2. Both baths got new plumbing, electrical, fixtures, etc. The electrical was a huge help because now we can run hair dryers without tripping a breaker! :D 3. I know y'all love the vintage sinks, but we have kids and need practical counter space and storage, so we sold the sinks to someone who wanted them. 4. We did the design ourselves and were aiming for a more modern feel but with nods to the house's Craftsman heritage (and without breaking the bank). Overall I'm happy with how it came out! Things I wish I'd done: 1. Make sure the floors get leveled before tiling. Maybe could be done by pouring self-leveling compound. The out-of-level was never noticable, but once the vanity cabinets went in, you could see it in the corners and we had to compensate for that. Feel free to ask me any questions on the bathroom remodel journey! |
2024.05.20 02:27 queefmonsterhaha Bing wrote a poem about why pooing in sink is bad haha
submitted by queefmonsterhaha to bing [link] [comments] |
2024.05.20 02:23 NotSoSlimShady1001 The Spirit of a Predator - Chapter 25: An Open Door
2024.05.20 02:03 weekneekweeknee Water takes 45 seconds to start flowing. What is wrong?
Water from this faucet takes a ridiculously long time to start flowing. This is in a brand-new-construction restaurant kitchen. This is one of several sinks (dish sink, hand sinks, utility sink, prep sink) all on the same line and this is the only sink with this problem. It’s also the only sink with this thing (that I think is a vacuum breaker?) on the faucet. The problem affects both hot and cold water. The longer the water has been turned off, the longer it takes to start flowing. I’ve timed it at 45 seconds. I think sometimes it’s been longer when I have just walked away and done another task and forgetten about it until it turns on. My builder and his plumbing subcontractor just shrugged and said it’s the way the faucet was designed. But it’s maddening and can’t possibly be the way it’s supposed to operate. No faucet in the developed world should take this long to start flowing! submitted by weekneekweeknee to Plumbing [link] [comments] Can anyone tell me what the actual problem is? Is it a defective part? Is it installed incorrectly? Is there some adjustment that could be made? I would appreciate any insight! |
2024.05.20 01:58 Glittering_Hour4321 Double jointed-ness in her chromosome disorder
We know now Gypsy had admitted to having a chromosome 1q21.1 micro deletion and claims she’s the 75% that’s not affected. The website she quoted actually did say 75% are affected enough to have a developmental delay (Link: https://medlineplus.gov/genetics/condition/1q211-microdeletion/) submitted by Glittering_Hour4321 to GRBsnark [link] [comments] Now this pdf (https://www.rarechromo.org/media/information/Chromosome%20%201/1q21.1%20microdeletions%20FTNW.pdf) claims double jointed-ness is a common symptom of the disorder. What does this picture of Gypsy’s elbow tell you? 🤔 |
2024.05.20 01:08 finger_the_shark Help Needed: Best Way to Connect Washer Drain Line?
Hello everyone, submitted by finger_the_shark to Plumbing [link] [comments] Thank you in advance for your help! I'm moving my washer and dryer upstairs and need advice on how to tie a 2-inch drain line into my main sewer. Here are my ideas:
|
2024.05.20 01:00 Brief_Investigator82 sanity check for splitting rent
2024.05.19 23:27 SavageMDH Plumbing help
I'm having trouble deciding on how to plumb this correctly. I have two bathrooms that share the same wall and sink drain. I've had trouble in the past with one sink backing up from the other being used because of poor venting situation. Currently it's a combination of copper and black iron and one vent at the very end. I found these vents online and they would solve that issue assuming it's wise to do so. The stack already has a Y as you can see, should I just run two new drains into that Y with all new pvc and "mini vents"? submitted by SavageMDH to Plumbing [link] [comments] |
2024.05.19 23:17 d4d80d Guest Bath Completed, now onto the Master Bath (In Progress)
Completed my guest bath around Jan/Feb timing. I hate myself, so immediately jumped into demo of the master bath. submitted by d4d80d to Tile [link] [comments] Just like the guest bath, there was a wall in the middle separating showetoilet and vanity. That got gutted along with some relocating of fixtures/outlets. All of the plumbing is brand new from main supply lines to sinks/shower valve and needed to be re routed. I beefed up the subfloor where the original "plumbers box" was as it was doubled 2x10's with a 22" span. The 1 1/2" drain was relocated and upgraded to 2". Shower is 36x60 with a deck mud pan and kerdiboard walls/curb. Before waterproofing, I installed all new LSL framing to ensure flat and plumb walls. Over the Kerdi, just for added insurance, I coated the whole thing in Hydroban. The deck mud had some minor pitting at the top so I skim coated the whole thing with mapei mapecem. Shower passed a 24+ hour flood test. The walls are so flat/plumb that I was able to precut all my rows except for the first, niche area, and last. Thank you all for emphasizing the wall prep - it is one of the most important steps next to waterproofing. First two photos are of the bathroom I completed. The remaining photos are the master bath. In the last photo, niche is in progress (along with the inner curb perimeter tiles). |
2024.05.19 22:50 everygoodnamegone Best way to add another bathroom?
I need to add another bathroom upstairs. This is not a custom build and unfortunately, changes during the building process are not an option. I realize this change will probably not add value to the home, it might even lower it, but this is what we need to do. submitted by everygoodnamegone to floorplan [link] [comments] Currently, it seems like the easiest way would be to convert the laundry room to a bathroom and put a stackable washedryer in the (extended) linen closet. Then add a double-door shallow linen closet at the end of the hall in the alcove between bedrooms 4 & 5. A stackable style "laundry tower" is not my first choice but the newer models are larger than the older style so we could make it work. In terms of resale value, I realize a stackable setup is not ideal. Another option would be to put the washedryer closet in the loft (landing) area, but that space is so small to begin with. Or we could put the washedryer in a laundry closet but turn it 90 degrees so it opens up to the long HALLWAY. But that means moving walls and spending more money, so I don't know that it would be worth it be worth it. Note- our house is reversed from the original floorplan so the photos will seem backward. Mirrored image also included. Also, I got lazy on #2...just pretend I drew a toilet, shower, and sink. The second image is three options I came up with to convert the laundry room into a bathroom. #2 has an arrow because the order might depend on how easy or difficult it is to move the toilet to the left which is further away from the other toilet and its 3-inch drain pipe. https://preview.redd.it/ry26bpz74g1d1.jpg?width=610&format=pjpg&auto=webp&s=18423280c61a359a50f9781171fce1b9f89ede84 https://preview.redd.it/y6nxzmkd4g1d1.jpg?width=740&format=pjpg&auto=webp&s=9b6e3484b68458740e861445bb52e6bec16e55c1 https://preview.redd.it/s3w4qmkd4g1d1.jpg?width=1645&format=pjpg&auto=webp&s=cca1f53d9c3e68c2277637f6eda3ebe9cdb6ffd0 https://preview.redd.it/5hyneokd4g1d1.jpg?width=1645&format=pjpg&auto=webp&s=4b799722b70e65af90087f0e7afad702f349ee14 https://preview.redd.it/b7k50zkd4g1d1.jpg?width=1216&format=pjpg&auto=webp&s=6eedd61c291df5a829bd53ebd3b90fb5ea2fcb40 |
2024.05.19 20:05 PinkieMort AZ - Need advice!
2024.05.19 19:44 Titty_Slicer_5000 Replacing CNN layers with Depthwise-Separable Conv layers in GAN leads to mode collapse
I want to create a visual generation AI and put it on a microcontroller. To that end I am working with the TGANv2 architecture. Since I want to fit this on a microcontroller I want to down-size the model. The generator currently has ~80 million parameters, and I need to down-size it to 2 million parameters. submitted by Titty_Slicer_5000 to learnmachinelearning [link] [comments] The general overview of how the model operates is as follows: a CLSTM layer generates 16 4x4 feature maps with 1024 channels, with each feature map being a frame if the generates video. Each 4x4x1024 feature map then goes through 6 up-sampling blocks, with each up-sampling block halving the number of channels and doubling the resolution. So the output of the 6th upsampling block will be 16 256x256 32-channel frames. The frames then go through a rendering block to bring them down to 3 RGB channels. This is during inference. During training only a "sub-sampling function" is inserted before the 4th, 5th, and 6th up-sampling blocks. The sub-sampling function starts at the first or second frame at random, and then selects every other frame, so it essentially halves the number of frames. Now the output of each sub-sample function is fed into its own rendering block, so the during training only the generator actually outputs 4 separate "sub-videos" in a single pass, with each sub-video having a different number of frames and a different spatial resolution. The discriminator is made up of 4 separate sub-discriminators, with each one handling a sub-video. Real training example videos are also split into 4 sub-videos in a similar fashion. The below block diagram encapsulates this: TGANv2 Architecture To try to down-size this model I first tried to replace all the normal CNN layers in the CLSTM only with depthwise-separable convolutions. However this leads to the output to mode collapse, and the discriminator to quickly overtake the generator (which is what leads to overfitting and mode collapse I think). Original CLSTM layer (written in Chainer): import chainer import chainer.functions as F import chainer.links as L class ConvLSTM(chainer.Chain): # Conv2D = EqualizedConv2D Conv2D = L.Convolution2D def __init__(self, in_channels, out_channels, ksize=None, stride=1, pad=0, dilate=1, peephole=False): super(ConvLSTM, self).__init__() with self.init_scope(): self.w_xifoc = self.Conv2D(in_channels, out_channels * 4, ksize, stride, pad, dilate=dilate) self.w_hifoc = self.Conv2D(out_channels, out_channels * 4, ksize, stride, pad, dilate=dilate, nobias=True) if peephole: # Peephole initializer = chainer.initializers.Zero() self.peep_c_i = chainer.Parameter(initializer) self.peep_c_f = chainer.Parameter(initializer) self.peep_c_o = chainer.Parameter(initializer) self.out_channels = out_channels self.peephole = peephole self.c = None self.h = None def reset_state(self): self.c = None self.h = None def initialize_params(self, shape): self.peep_c_i.initialize((self.out_channels, shape[2], shape[3])) self.peep_c_f.initialize((self.out_channels, shape[2], shape[3])) self.peep_c_o.initialize((self.out_channels, shape[2], shape[3])) def initialize_state(self, shape): self.c = chainer.Variable( self.xp.zeros((shape[0], self.out_channels, shape[2], shape[3]), dtype=self.xp.float32)) self.h = chainer.Variable( self.xp.zeros((shape[0], self.out_channels, shape[2], shape[3]), dtype=self.xp.float32)) def __call__(self, x): # Initialize peephole weights if self.peephole and self.peep_c_i.array is None: self.initialize_params(x.shape) # Initialize state if self.c is None: self.initialize_state(x.shape) xifoc = self.w_xifoc(x) xi, xf, xo, xc = F.split_axis(xifoc, 4, axis=1) hifoc = self.w_hifoc(self.h) hi, hf, ho, hc = F.split_axis(hifoc, 4, axis=1) ci = F.sigmoid(xi + hi + (F.scale(self.c, self.peep_c_i, 1) if self.peephole else 0)) cf = F.sigmoid(xf + hf + (F.scale(self.c, self.peep_c_f, 1) if self.peephole else 0)) cc = cf * self.c + ci * F.tanh(xc + hc) co = F.sigmoid(xo + ho + (F.scale(cc, self.peep_c_o, 1) if self.peephole else 0)) ch = co * F.tanh(cc) self.c = cc self.h = ch return chChanging CNN layers to depthwise-separable layers: import chainer import chainer.functions as F import chainer.links as L class ConvLSTM(chainer.Chain): # Conv2D = EqualizedConv2D Conv2D = L.Convolution2D def __init__(self, in_channels, out_channels, ksize=None, stride=1, pad=0, dilate=1, peephole=False): super(ConvLSTM, self).__init__() with self.init_scope(): # Depthwise separable convolution: Depthwise convolution followed by pointwise convolution self.w_xifoc_depth = L.DepthwiseConvolution2D(in_channels, 1, ksize, stride, pad) self.w_xifoc_point = L.Convolution2D(in_channels, out_channels * 4, 1, 1, 0) self.w_hifoc_depth = L.DepthwiseConvolution2D(out_channels, 1, ksize, stride, pad) self.w_hifoc_point = L.Convolution2D(out_channels, out_channels * 4, 1, 1, 0, nobias=True) if peephole: # Peephole initializer = chainer.initializers.Zero() self.peep_c_i = chainer.Parameter(initializer) self.peep_c_f = chainer.Parameter(initializer) self.peep_c_o = chainer.Parameter(initializer) self.out_channels = out_channels self.peephole = peephole self.c = None self.h = None def reset_state(self): self.c = None self.h = None def initialize_params(self, shape): self.peep_c_i.initialize((self.out_channels, shape[2], shape[3])) self.peep_c_f.initialize((self.out_channels, shape[2], shape[3])) self.peep_c_o.initialize((self.out_channels, shape[2], shape[3])) def initialize_state(self, shape): self.c = chainer.Variable( self.xp.zeros((shape[0], self.out_channels, shape[2], shape[3]), dtype=self.xp.float32)) self.h = chainer.Variable( self.xp.zeros((shape[0], self.out_channels, shape[2], shape[3]), dtype=self.xp.float32)) def __call__(self, x): # Initialize peephole weights if self.peephole and self.peep_c_i.array is None: self.initialize_params(x.shape) # Initialize state if self.c is None: self.initialize_state(x.shape) xifoc_depth = (self.w_xifoc_depth(x)) xifoc = self.w_xifoc_point(xifoc_depth) xi, xf, xo, xc = F.split_axis(xifoc, 4, axis=1) hifoc_depth = (self.w_hifoc_depth(self.h)) hifoc = self.w_hifoc_point(hifoc_depth) hi, hf, ho, hc = F.split_axis(hifoc, 4, axis=1) ci = F.sigmoid(xi + hi + (F.scale(self.c, self.peep_c_i, 1) if self.peephole else 0)) cf = F.sigmoid(xf + hf + (F.scale(self.c, self.peep_c_f, 1) if self.peephole else 0)) cc = cf * self.c + ci * F.tanh(xc + hc) co = F.sigmoid(xo + ho + (F.scale(cc, self.peep_c_o, 1) if self.peephole else 0)) ch = co * F.tanh(cc) self.c = cc self.h = ch return chI also tried multiple depthwise layers before the pointwise layer: def __call__(self, x): # Initialize peephole weights if self.peephole and self.peep_c_i.array is None: self.initialize_params(x.shape) # Initialize state if self.c is None: self.initialize_state(x.shape) xifoc_depth = (self.w_xifoc_depth1(x)) xifoc_depth = (self.w_xifoc_depth2(xifoc_depth)) xifoc_depth = (self.w_xifoc_depth3(xifoc_depth)) xifoc_depth = (self.w_xifoc_depth4(xifoc_depth)) xifoc_depth = (self.w_xifoc_depth5(xifoc_depth)) xifoc_depth = (self.w_xifoc_depth6(xifoc_depth)) xifoc = self.w_xifoc_point(xifoc_depth) xi, xf, xo, xc = F.split_axis(xifoc, 4, axis=1) hifoc_depth = (self.w_hifoc_depth1(self.h)) hifoc_depth = (self.w_hifoc_depth2(hifoc_depth)) hifoc_depth = (self.w_hifoc_depth3(hifoc_depth)) hifoc_depth = (self.w_hifoc_depth4(hifoc_depth)) hifoc_depth = (self.w_hifoc_depth5(hifoc_depth)) hifoc_depth = (self.w_hifoc_depth6(hifoc_depth)) hifoc = self.w_hifoc_point(hifoc_depth) hi, hf, ho, hc = F.split_axis(hifoc, 4, axis=1)This code example has 6 but I also tried 3. I also tried adding different activation functions after the depthwise layers (relu tanh, and sigmoid): xifoc_depth = F.sigmoid(self.w_xifoc_depth1(x)) xifoc_depth = F.sigmoid(self.w_xifoc_depth2(xifoc_depth)) xifoc_depth = F.sigmoid(self.w_xifoc_depth3(xifoc_depth)) xifoc_depth = F.sigmoid(self.w_xifoc_depth4(xifoc_depth)) xifoc_depth = F.sigmoid(self.w_xifoc_depth5(xifoc_depth)) xifoc_depth = F.sigmoid(self.w_xifoc_depth6(xifoc_depth))But everything leads to mode collapse of the output of the generator. Though using 3 depthwise layers with a sigmoid activation leads to the best relative output from a spatial resolution POV (the other combos are more blurry), but still mode collapsed. Is this a known issue with depthwise-separable convolutions in GANs, or in general? Are there any known fixes? Are there good GAN architectures that use depthwise-separable convolutions that I can perhaps learn from? Does anyone have any insight into what is going on here? Any resources that can help me with this? Any advice is highly appreciated. |
2024.05.19 19:44 Titty_Slicer_5000 Replacing CNN layers with Depthwise-Separable Conv layers in GAN leads to mode collapse
import chainer import chainer.functions as F import chainer.links as L class ConvLSTM(chainer.Chain): # Conv2D = EqualizedConv2D Conv2D = L.Convolution2D def __init__(self, in_channels, out_channels, ksize=None, stride=1, pad=0, dilate=1, peephole=False): super(ConvLSTM, self).__init__() with self.init_scope(): self.w_xifoc = self.Conv2D(in_channels, out_channels * 4, ksize, stride, pad, dilate=dilate) self.w_hifoc = self.Conv2D(out_channels, out_channels * 4, ksize, stride, pad, dilate=dilate, nobias=True) if peephole: # Peephole initializer = chainer.initializers.Zero() self.peep_c_i = chainer.Parameter(initializer) self.peep_c_f = chainer.Parameter(initializer) self.peep_c_o = chainer.Parameter(initializer) self.out_channels = out_channels self.peephole = peephole self.c = None self.h = None def reset_state(self): self.c = None self.h = None def initialize_params(self, shape): self.peep_c_i.initialize((self.out_channels, shape[2], shape[3])) self.peep_c_f.initialize((self.out_channels, shape[2], shape[3])) self.peep_c_o.initialize((self.out_channels, shape[2], shape[3])) def initialize_state(self, shape): self.c = chainer.Variable( self.xp.zeros((shape[0], self.out_channels, shape[2], shape[3]), dtype=self.xp.float32)) self.h = chainer.Variable( self.xp.zeros((shape[0], self.out_channels, shape[2], shape[3]), dtype=self.xp.float32)) def __call__(self, x): # Initialize peephole weights if self.peephole and self.peep_c_i.array is None: self.initialize_params(x.shape) # Initialize state if self.c is None: self.initialize_state(x.shape) xifoc = self.w_xifoc(x) xi, xf, xo, xc = F.split_axis(xifoc, 4, axis=1) hifoc = self.w_hifoc(self.h) hi, hf, ho, hc = F.split_axis(hifoc, 4, axis=1) ci = F.sigmoid(xi + hi + (F.scale(self.c, self.peep_c_i, 1) if self.peephole else 0)) cf = F.sigmoid(xf + hf + (F.scale(self.c, self.peep_c_f, 1) if self.peephole else 0)) cc = cf * self.c + ci * F.tanh(xc + hc) co = F.sigmoid(xo + ho + (F.scale(cc, self.peep_c_o, 1) if self.peephole else 0)) ch = co * F.tanh(cc) self.c = cc self.h = ch return chChanging CNN layers to depthwise-separable layers:
import chainer import chainer.functions as F import chainer.links as L class ConvLSTM(chainer.Chain): # Conv2D = EqualizedConv2D Conv2D = L.Convolution2D def __init__(self, in_channels, out_channels, ksize=None, stride=1, pad=0, dilate=1, peephole=False): super(ConvLSTM, self).__init__() with self.init_scope(): # Depthwise separable convolution: Depthwise convolution followed by pointwise convolution self.w_xifoc_depth = L.DepthwiseConvolution2D(in_channels, 1, ksize, stride, pad) self.w_xifoc_point = L.Convolution2D(in_channels, out_channels * 4, 1, 1, 0) self.w_hifoc_depth = L.DepthwiseConvolution2D(out_channels, 1, ksize, stride, pad) self.w_hifoc_point = L.Convolution2D(out_channels, out_channels * 4, 1, 1, 0, nobias=True) if peephole: # Peephole initializer = chainer.initializers.Zero() self.peep_c_i = chainer.Parameter(initializer) self.peep_c_f = chainer.Parameter(initializer) self.peep_c_o = chainer.Parameter(initializer) self.out_channels = out_channels self.peephole = peephole self.c = None self.h = None def reset_state(self): self.c = None self.h = None def initialize_params(self, shape): self.peep_c_i.initialize((self.out_channels, shape[2], shape[3])) self.peep_c_f.initialize((self.out_channels, shape[2], shape[3])) self.peep_c_o.initialize((self.out_channels, shape[2], shape[3])) def initialize_state(self, shape): self.c = chainer.Variable( self.xp.zeros((shape[0], self.out_channels, shape[2], shape[3]), dtype=self.xp.float32)) self.h = chainer.Variable( self.xp.zeros((shape[0], self.out_channels, shape[2], shape[3]), dtype=self.xp.float32)) def __call__(self, x): # Initialize peephole weights if self.peephole and self.peep_c_i.array is None: self.initialize_params(x.shape) # Initialize state if self.c is None: self.initialize_state(x.shape) xifoc_depth = (self.w_xifoc_depth(x)) xifoc = self.w_xifoc_point(xifoc_depth) xi, xf, xo, xc = F.split_axis(xifoc, 4, axis=1) hifoc_depth = (self.w_hifoc_depth(self.h)) hifoc = self.w_hifoc_point(hifoc_depth) hi, hf, ho, hc = F.split_axis(hifoc, 4, axis=1) ci = F.sigmoid(xi + hi + (F.scale(self.c, self.peep_c_i, 1) if self.peephole else 0)) cf = F.sigmoid(xf + hf + (F.scale(self.c, self.peep_c_f, 1) if self.peephole else 0)) cc = cf * self.c + ci * F.tanh(xc + hc) co = F.sigmoid(xo + ho + (F.scale(cc, self.peep_c_o, 1) if self.peephole else 0)) ch = co * F.tanh(cc) self.c = cc self.h = ch return chI also tried multiple depthwise layers before the pointwise layer:
def __call__(self, x): # Initialize peephole weights if self.peephole and self.peep_c_i.array is None: self.initialize_params(x.shape) # Initialize state if self.c is None: self.initialize_state(x.shape) xifoc_depth = (self.w_xifoc_depth1(x)) xifoc_depth = (self.w_xifoc_depth2(xifoc_depth)) xifoc_depth = (self.w_xifoc_depth3(xifoc_depth)) xifoc_depth = (self.w_xifoc_depth4(xifoc_depth)) xifoc_depth = (self.w_xifoc_depth5(xifoc_depth)) xifoc_depth = (self.w_xifoc_depth6(xifoc_depth)) xifoc = self.w_xifoc_point(xifoc_depth) xi, xf, xo, xc = F.split_axis(xifoc, 4, axis=1) hifoc_depth = (self.w_hifoc_depth1(self.h)) hifoc_depth = (self.w_hifoc_depth2(hifoc_depth)) hifoc_depth = (self.w_hifoc_depth3(hifoc_depth)) hifoc_depth = (self.w_hifoc_depth4(hifoc_depth)) hifoc_depth = (self.w_hifoc_depth5(hifoc_depth)) hifoc_depth = (self.w_hifoc_depth6(hifoc_depth)) hifoc = self.w_hifoc_point(hifoc_depth) hi, hf, ho, hc = F.split_axis(hifoc, 4, axis=1)This code example has 6 but I also tried 3. I also tried adding different activation functions after the depthwise layers (relu tanh, and sigmoid):
xifoc_depth = F.sigmoid(self.w_xifoc_depth1(x)) xifoc_depth = F.sigmoid(self.w_xifoc_depth2(xifoc_depth)) xifoc_depth = F.sigmoid(self.w_xifoc_depth3(xifoc_depth)) xifoc_depth = F.sigmoid(self.w_xifoc_depth4(xifoc_depth)) xifoc_depth = F.sigmoid(self.w_xifoc_depth5(xifoc_depth)) xifoc_depth = F.sigmoid(self.w_xifoc_depth6(xifoc_depth))But everything leads to mode collapse of the output of the generator. Though using 3 depthwise layers with a sigmoid activation leads to the best relative output from a spatial resolution POV (the other combos are more blurry), but still mode collapsed.